package com.tjtt.tdm.system.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;

import com.tjtt.tdm.base.PageResult;
import com.tjtt.tdm.exception.DaoException;
import com.tjtt.tdm.exception.ServiceException;
import com.tjtt.tdm.system.bean.Organization;

public interface OrganizationService {
	/**
	 * 查询所有的分类节点
	 * @return Organization
	 * @throws ServiceException
	 */
	public List<Organization> getAllTypes() throws ServiceException;
	/**
	 * 查询房屋管理所有的分类节点
	 * @return Organization
	 * @throws ServiceException
	 */
	public List getAllTypesBFR() throws ServiceException;
	public List getAllTypesB() throws ServiceException;
	public List getAllTypesF() throws ServiceException;
	public List getAllTypesR() throws ServiceException;
	
	/**
	 * 查询所有的组织机构管理数据列表
	 * @param filterMap
	 * @return PageResult
	 * @author 张海娜
	 * @date 2012-9-24 下午01:56:12
	 */
	public PageResult queryOrganizationList(Map<String, String> filterMap);
	 
	/**
	 * 通过选中节点查询组织机构
	 * @param parseInt
	 * @param filterMap
	 * @return PageResult
	 * @author 张海娜
	 * @date 2012-9-24 下午01:56:42
	 */
	public PageResult findOrganizationByParentId(int orgParentId,
			Map<String, String> filterMap);
	/**
	 * 根据机构名称查询记录
	 * @param orgName
	 * @return JSONArray
	 * @author 张海娜
	 * @date 2012-9-24 下午03:27:17
	 */
	public List<Organization> findByProperty(String orgName) throws ServiceException ;
	/**
	 * 保存组织机构（列表和树）
	 * @param organization void
	 * @author 张海娜
	 * @date 2012-9-24 下午03:27:22
	 */
	public void saveOrganization(Organization organization) throws ServiceException ;
	/**
	 * 修改组织机构（列表和树）
	 * @param organization
	 * @throws ServiceException void
	 * @author 张海娜
	 * @date 2012-9-24 下午04:44:41
	 */
	public void updateOrganization(Organization organization) throws ServiceException;
	/**
	 * 删除组织机构（列表）
	 * @param ids
	 * @throws ServiceException void
	 * @author 张海娜
	 * @date 2012-9-24 下午04:44:46
	 */
	public void removeOrganization(String ids) throws ServiceException;
	/**
	 * 查看
	 * @param id
	 * @return Organization
	 * @author 张海娜
	 * @date 2012-9-24 下午05:33:39
	 */
	public Organization findOrganizationById(Long id);
	
	/**
	 * 根据条件获取组织结构的总量
	 * @param params
	 * @return
	 * @throws ServiceException 
	 */
	public Long getOrgCount(HashMap params) throws ServiceException;
	/**
	 * 查找用户表里的组织id
	 * @return
	 * @throws ServiceException String
	 * @author 张海娜
	 * @date 2012-10-22 下午03:11:40
	 */
	public PageResult findUserByOrgId(String ids, Map<String, String> filterMap) throws ServiceException;
	/**
	 * 根据id获取组织信息
	 * @param id
	 * @return
	 * @throws ServiceException Organization
	 * @author 张海娜
	 * @date 2012-11-13 上午11:18:05
	 */
	public Organization getOrganizations(Long orgId) throws ServiceException;
	/**
	 * 保存组织信息
	 * @param organizations
	 * @throws ServiceException void
	 * @author 张海娜
	 * @date 2012-11-13 上午11:21:36
	 */
	public void saveOrganizations(Organization organizations) throws ServiceException;
	/**
	 * 根据删除标记delflag为1，查询机构名称是否存在
	 * @param orgName
	 * @return PageResult
	 * @author 张海娜
	 * @date 2012-11-13 下午05:33:47
	 */
	public PageResult findOrganizationByDelflag(String orgName,Map<String, String> filterMap,Long orgParentId);
	public PageResult findOrgByDelflag(Long orgId,String orgName,Map<String, String> filterMap);
	public PageResult findUserById(int id, Map<String, String> filterMap);
	public PageResult queryUserList(Map<String, String> filterMap);
	/**
	 * 查询名称是否存在
	 * @throws Exception void
	 * @author 张海娜
	 * @date 2013-2-21 下午02:06:10
	 */
	public Organization findOrganizationName(String orgName);
	/**
	 * 查询编号是否存在
	 * @throws Exception void
	 * @author 张海娜
	 * @param orgParentId 
	 * @date 2013-2-21 下午01:56:10
	 */
	public Organization findOrganizationByorgNo(String orgNo);
	public PageResult findOrganizationorgNoByDelflag(String orgNo, Map filterMap,Long pId);
	public PageResult queryuserByOrganationid(Map<String, String> filterMap,String userByOrganationid);
	/*
	 * 检查主键ids是否已经在流程中使用
	 * 返回值：true表示在使用，false表示没在使用
	 */
	public boolean isUsingItem(String ids, String[] tables, String[] fieldNames);
	public List<Organization> getAllTypes4() throws ServiceException ;
	public List<Organization> getAllTypesBuFen() throws ServiceException;
}
